#ifndef PST_CURVE2DPLOTOR_H
#define PST_CURVE2DPLOTOR_H

#include "qcustomplot.h"

namespace pst
{
    class Curve2DPlotor :public QCustomPlot
    {
        Q_OBJECT
    public:
        explicit Curve2DPlotor(QWidget* parent = nullptr);

    public:
        void setXAxisTitleName(const QString& titleName);
        void setXAxisFontFamily(const QString& family);
        void setXAxisFontSize(int size);
        void setXAxisRangeMin(double min);
        void setXAxisRangeMax(double max);
        void setXAxisRangeStep(double step);

        void setYAxisTitleName(const QString& titleName);
        void setYAxisFontFamily(const QString& family);
        void setYAxisFontSize(int size);
        void setYAxisRangeMin(double min);
        void setYAxisRangeMax(double max);
        void setYAxisRangeStep(double step);

    private slots:
        /// @brief 双击修改标题名称
        void titleDoubleClick(QMouseEvent* event);
        /// @brief 双击修改轴名称 
        void axisLabelDoubleClick(QCPAxis* axis, QCPAxis::SelectablePart part);
        /// @brief 双击修改图例名称
        void legendDoubleClick(QCPLegend* legend, QCPAbstractLegendItem* item);
        void selectionChanged();
        void mousePress();
        void mouseWheel();
        /// @brief 随机添加图形
        void addRandomGraph();
        /// @brief 移除选中的图形
        void removeSelectedGraph();
        /// @brief 移除所有图形
        void removeAllGraphs();
        /// @brief 右键菜单
        void contextMenuRequest(QPoint pos);
        /// @brief 移动图例
        void moveLegend();
        /// @brief 图形点击
        void graphClicked(QCPAbstractPlottable* plottable, int dataIndex);
    };
}
#endif